package com.atguigu.srb.core.pojo.entity;

import java.math.BigDecimal;

import com.baomidou.mybatisplus.annotation.*;

import java.io.Serializable;
import java.util.Date;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;

/**
 * <p>
 * 积分等级表
 * </p>
 *
 * @author Atguigu
 * @since 2022-10-24
 */
@Data
@EqualsAndHashCode(callSuper = false)
//描述实体类的，swagger生成接口文档时 会通过属性值描述javabean
@ApiModel(value="IntegralGrade对象", description="积分等级表")
public class IntegralGrade implements Serializable {

    private static final long serialVersionUID = 1L;
    //描述一个属性
    @ApiModelProperty(value = "编号",hidden = true)
    //使用雪花算法分配id
    //jackson将数值型的 数据转为json字符串时，如果长度超过16 会将后面的变为0，导致精度丢失
    //只需要配置jackson转换数值型数据时采用字符串的方式转换 问题可以解决
    @JsonSerialize(using = ToStringSerializer.class) //标注的属性会采用字符串的方式转换
    @TableId(value = "id", type = IdType.ASSIGN_ID)
    private Long id;

    @ApiModelProperty(value = "积分区间开始")
    private Integer integralStart;

    @ApiModelProperty(value = "积分区间结束")
    private Integer integralEnd;

    @ApiModelProperty(value = "借款额度")
    private BigDecimal borrowAmount;

    @ApiModelProperty(value = "创建时间")
//    @JsonFormat(pattern = "yyyy-MM-dd")
    @TableField(fill = FieldFill.INSERT)
    private Date createTime;
    @JsonFormat(pattern = "yyyy-MM-dd")
    @ApiModelProperty(value = "更新时间")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Date updateTime;
    //hidden 表示在swagger生成的文档中隐藏id
    @ApiModelProperty(value = "逻辑删除(1:已删除，0:未删除)" ,hidden = true)
    @TableField("is_deleted")
    @TableLogic
    private Boolean deleted;

//    private String test;
}
